package com.animerank.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.animerank.entity.Anime;
import com.animerank.dto.RankDTO;
import com.animerank.dto.Result;

import java.util.List;
import java.util.Map;

/**
 * 动漫服务接口
 */
public interface IAnimeService extends IService<Anime> {

    /**
     * 搜索动漫
     * @param keyword 关键词
     * @return 动漫列表
     */
    Result<List<Anime>> searchAnime(String keyword);

    /**
     * 获取月度动漫排行榜
     * @param page 页码
     * @param pageSize 每页数量
     * @return 排行榜列表
     */
    Result<Map<String, Object>> getMonthlyRank(Integer page, Integer pageSize);

    /**
     * 根据ID获取动漫详情
     * @param id 动漫ID
     * @return 动漫详情
     */
    Result<Anime> getAnimeDetail(Long id);

    /**
     * 获取动漫投票数
     * @param animeId 动漫ID
     * @return 投票数
     */
    Result<Integer> getAnimeVoteCount(Long animeId);

    /**
     * 获取全部动漫（支持分页和筛选）
     * @param query 查询参数（可选）
     * @param page 页码
     * @param pageSize 每页数量
     * @param season 季度筛选（可选）
     * @param year 年份筛选（可选）
     * @param genre 类型筛选（可选）
     * @param sortBy 排序方式（可选）
     * @return 包含分页信息的动漫列表
     */
    Result<Map<String, Object>> getAllAnimes(String query, Integer page, Integer pageSize, String season, Integer year, String genre, String sortBy);

}